import { app } from 'electron';
import path from 'path';
import fs from 'fs';

/**
 * 硬核路径获取器（无视任何环境差异）
 */
export class PathFinder {
  // 项目根目录（强制校验）
  static get PROJECT_ROOT(): string {
    const base = app.getAppPath().includes('app.asar')
      ? path.dirname(path.dirname(app.getAppPath())) // 打包后
      : app.getAppPath(); // 开发环境

    if (!fs.existsSync(base))
      throw new Error(`致命错误：项目根目录不存在 ${base}`);
    return base;
  }

  // 虚拟环境目录（强制存在校验）
  static get VENV_PATH(): string {
    const p = path.join(this.PROJECT_ROOT, 'venv');
    if (!fs.existsSync(p)) throw new Error(`虚拟环境不存在: ${p}`);
    return p;
  }

  // Python可执行文件（精确路径）
  static get PYTHON_PATH(): string {
    const p = path.join(
      this.VENV_PATH,
      process.platform === 'win32' ? 'Scripts/python.exe' : 'bin/python',
    );
    if (!fs.existsSync(p)) throw new Error(`Python不存在: ${p}`);
    return p;
  }

  // 启动脚本（自动平台适配）
  static get STARTUP_SCRIPT(): string {
    const p = path.join(
      this.PROJECT_ROOT,
      'scripts',
      `run_pup_core.${process.platform === 'win32' ? 'bat' : 'sh'}`,
    );
    if (!fs.existsSync(p)) throw new Error(`启动脚本不存在: ${p}`);
    return p;
  }
}
